home *** CD-ROM | disk | FTP | other *** search
/ Sounds Terrific 2 / Sounds Terrific II (1996)(Weird Science)(Disc 1 of 2)[Amiga-PC].iso / archives / amiga / amisox33.lha / AmiSOX3.3 / dist / handlers.c < prev    next >
C/C++ Source or Header  |  1994-01-23  |  8KB  |  284 lines

  1. /*
  2.  * July 5, 1991
  3.  * Copyright 1991 Lance Norskog And Sundry Contributors
  4.  * This source code is freely redistributable and may be used for
  5.  * any purpose.  This copyright notice must be maintained. 
  6.  * Lance Norskog And Sundry Contributors are not responsible for 
  7.  * the consequences of using this software.
  8.  */
  9.  
  10. #include "st.h"
  11.  
  12. /*
  13.  * Sound Tools file format and effect tables.
  14.  */
  15.  
  16. /* File format handlers. */
  17.  
  18. char *rawnames[] = {
  19.     "raw",
  20.     (char *) 0
  21. };
  22. extern rawstartread(), rawread();
  23. extern rawstartwrite(), rawwrite(), rawstopwrite();
  24.  
  25. char *cdrnames[] = {
  26.     "cdr",
  27.     (char *) 0
  28. };
  29. extern cdrstartread(), cdrread(), cdrstopread();
  30. extern cdrstartwrite(), cdrwrite(), cdrstopwrite();
  31.  
  32. char *vocnames[] = {
  33.     "voc",
  34.     (char *) 0
  35. };
  36. extern vocstartread(), vocread(), vocstopread();
  37. extern vocstartwrite(), vocwrite(), vocstopwrite();
  38.  
  39. char *aunames[] = {
  40.     "au",
  41. #ifdef    NeXT
  42.     "snd",
  43. #endif
  44.     (char *) 0
  45. };
  46. extern austartread();
  47. extern austartwrite(), auread(), auwrite(), austopwrite();
  48.  
  49. char *aiffnames[] = {
  50.     "aiff",
  51.     "aif",
  52.     (char *) 0
  53. };
  54. extern aiffstartread(), aiffread(), aiffstopread();
  55. extern aiffstartwrite(), aiffwrite(), aiffstopwrite();
  56.  
  57. char *svxnames[] = {
  58.     "8svx",
  59.     "iff",
  60.     (char *) 0
  61. };
  62. extern svxstartread(), svxread(), svxstopread();
  63. extern svxstartwrite(), svxwrite(), svxstopwrite();
  64.  
  65. char *hcomnames[] = {
  66.     "hcom",
  67.     (char *) 0
  68. };
  69. extern hcomstartread(), hcomread(), hcomstopread();
  70. extern hcomstartwrite(), hcomwrite(), hcomstopwrite();
  71.  
  72. char *sndtnames[] = {
  73.     "sndt",
  74. #ifdef    DOS
  75.     "snd",
  76. #endif
  77.     (char *) 0
  78. }; 
  79. extern sndtstartread();
  80. extern sndtstartwrite(), sndtwrite(), sndtstopwrite();
  81.  
  82. char *sndrnames[] = {
  83.     "sndr",
  84.     (char *) 0
  85. };
  86. extern sndrstartwrite();
  87.  
  88. char *ubnames[] = {
  89.     "ub",
  90.     "sou",
  91.     "fssd",
  92. #ifdef    MAC
  93.     "snd",
  94. #endif
  95.     (char *) 0
  96. };
  97. extern ubstartread();
  98. extern ubstartwrite();
  99.  
  100. char *sbnames[] = {
  101.     "sb",
  102.     (char *) 0
  103. };
  104. extern sbstartread();
  105. extern sbstartwrite();
  106.  
  107. char *uwnames[] = {
  108.     "uw",
  109.     (char *) 0
  110. };
  111. extern uwstartread();
  112. extern uwstartwrite();
  113.  
  114. char *swnames[] = {
  115.     "sw",
  116.     (char *) 0
  117. };
  118. extern swstartread();
  119. extern swstartwrite();
  120.  
  121. char *ulnames[] = {
  122.     "ul",
  123.     (char *) 0
  124. };
  125. extern ulstartread();
  126. extern ulstartwrite();
  127.  
  128.  
  129. char *sfnames[] = {
  130.     "sf",
  131.     (char *) 0
  132. };
  133. extern sfstartread();
  134. extern sfstartwrite();
  135.  
  136. char *wavnames[] = {
  137.     "wav",
  138.     (char *) 0
  139. };
  140. extern wavstartread(), wavread();
  141. extern wavstartwrite(), wavwrite(), wavstopwrite();
  142.  
  143. #if    defined(BLASTER) || defined(SBLAST) || defined(LINUXSOUND)
  144. char *sbdspnames[] = {
  145.     "sbdsp",
  146.     (char *) 0
  147. };
  148. extern sbdspstartread(), sbdspread(), sbdspstopread();
  149. extern sbdspstartwrite(), sbdspwrite(), sbdspstopwrite();
  150. #endif
  151.  
  152. char *smpnames[] = {
  153.     "smp",
  154.     (char *) 0,
  155. };
  156.  
  157. extern smpstartread(), smpread(), smpwrite();
  158. extern smpstartwrite(), smpstopwrite();
  159.  
  160. char *autonames[] = {
  161.     "auto",
  162.     (char *) 0,
  163. };
  164.  
  165. extern autostartread();
  166. extern autostartwrite();
  167.  
  168. char *datnames[] = {
  169.     "dat",
  170.     (char *) 0
  171. };
  172. extern datstartread(), datread();
  173. extern datstartwrite(), datwrite(), datstopwrite();
  174.  
  175. extern nothing();
  176.  
  177. EXPORT format_t formats[] = {
  178.     {autonames, autostartread, nothing, nothing,    /* Guess from header */
  179.         autostartwrite, nothing, nothing},    /* patched run time */
  180.     {smpnames, smpstartread, smpread, nothing,    /* SampleVision sound */
  181.         smpstartwrite, smpwrite, smpstopwrite},    /* Turtle Beach */
  182.     {rawnames, rawstartread, rawread, nothing,     /* Raw format */
  183.         rawstartwrite, rawwrite, nothing},
  184.     {cdrnames, cdrstartread, cdrread, cdrstopread,  /* CD-R format */
  185.         cdrstartwrite, cdrwrite, cdrstopwrite},
  186.     {vocnames, vocstartread, vocread, vocstopread,  /* Sound Blaster .VOC */
  187.         vocstartwrite, vocwrite, vocstopwrite},
  188.     {aunames, austartread, auread, nothing,     /* SPARC .AU w/header */
  189.         austartwrite, auwrite, austopwrite},    
  190.     {ubnames, ubstartread, rawread, nothing,     /* unsigned byte raw */
  191.         ubstartwrite, rawwrite, nothing},    /* Relies on raw */
  192.     {sbnames, sbstartread, rawread, nothing,     /* signed byte raw */
  193.         sbstartwrite, rawwrite, nothing},    
  194.     {uwnames, uwstartread, rawread, nothing,     /* unsigned word raw */
  195.         uwstartwrite, rawwrite, nothing},    
  196.     {swnames, swstartread, rawread, nothing,     /* signed word raw */
  197.         swstartwrite, rawwrite, nothing},
  198.     {ulnames, ulstartread, rawread, nothing,     /* u-law byte raw */
  199.         ulstartwrite, rawwrite, nothing},    
  200.     {aiffnames, aiffstartread, rawread, nothing,    /* SGI/Apple AIFF */
  201.         aiffstartwrite, aiffwrite, aiffstopwrite},
  202.     {svxnames, svxstartread, svxread, svxstopread,      /* Amiga 8SVX */
  203.         svxstartwrite, svxwrite, svxstopwrite},
  204.     {hcomnames, hcomstartread, hcomread, hcomstopread, /* Mac FSSD/HCOM */
  205.         hcomstartwrite, hcomwrite, hcomstopwrite},
  206.     {sfnames, sfstartread, rawread, nothing,     /* IRCAM Sound File */
  207.         sfstartwrite, rawwrite, nothing},    /* Relies on raw */
  208.     {sndtnames, sndtstartread, rawread, nothing,    /* Sndtool Sound File */
  209.         sndtstartwrite, sndtwrite, sndtstopwrite},
  210.     {sndrnames, sndtstartread, rawread, nothing,    /* Sounder Sound File */
  211.         sndrstartwrite, rawwrite, nothing},
  212.     {wavnames, wavstartread, wavread, nothing,     /* Windows 3.0 .wav */
  213.         wavstartwrite, wavwrite, wavstopwrite},    
  214. #if    defined(BLASTER) || defined(SBLAST) || defined(LINUXSOUND)
  215.     /* 386 Unix sound blaster players.  No more of these, please! */
  216.     {sbdspnames, sbdspstartread, sbdspread, sbdspstopread,     /* /dev/sbdsp */
  217.         sbdspstartwrite, sbdspwrite, sbdspstopwrite},    
  218. #endif
  219.     {datnames, datstartread, datread, nothing,     /* Text data samples */
  220.         datstartwrite, datwrite, nothing},
  221.     0
  222. };
  223.  
  224. /* Effects handlers. */
  225.  
  226. extern null_drain();        /* dummy drain routine */
  227.  
  228. extern copy_getopts(), copy_start(), copy_flow(), copy_stop();
  229. extern avg_getopts(), avg_start(), avg_flow(), avg_stop();
  230. extern pred_getopts(), pred_start(), pred_flow(), pred_stop();
  231. extern stat_getopts(), stat_start(), stat_flow(), stat_stop();
  232. extern vibro_getopts(), vibro_start(), vibro_flow(), vibro_stop();
  233. extern band_getopts(), band_start(), band_flow(), band_stop();
  234. extern lowp_getopts(), lowp_start(), lowp_flow(), lowp_stop();
  235. extern highp_getopts(), highp_start(), highp_flow(), highp_stop();
  236. #ifdef    USE_DYN
  237. extern dyn_getopts(), dyn_start(), dyn_flow(), dyn_stop();
  238. #endif
  239. extern echo_getopts(), echo_start(), echo_flow(), echo_drain(), echo_stop();
  240. extern rate_getopts(), rate_start(), rate_flow(), rate_stop();
  241. extern reverse_getopts(), reverse_start(), 
  242.        reverse_flow(), reverse_drain(), reverse_stop();
  243.  
  244. /*
  245.  * EFF_CHAN means that the number of channels can change.
  246.  * EFF_RATE means that the sample rate can change.
  247.  * The first effect which can handle a data rate change, stereo->mono, etc.
  248.  * is the default handler for that problem.
  249.  * 
  250.  * EFF_MCHAN just means that the effect is coded for multiple channels.
  251.  */
  252.  
  253. EXPORT effect_t effects[] = {
  254.     {"copy", EFF_MCHAN, 
  255.         copy_getopts, copy_start, copy_flow, null_drain, nothing},
  256.     {"avg", EFF_CHAN, 
  257.         avg_getopts, avg_start, avg_flow, null_drain, avg_stop},
  258.     {"pred", 0,
  259.         pred_getopts, pred_start, pred_flow, null_drain, pred_stop},
  260.     {"stat", EFF_MCHAN, 
  261.         stat_getopts, stat_start, stat_flow, null_drain, stat_stop},
  262.     {"vibro", 0, 
  263.         vibro_getopts, vibro_start, vibro_flow, null_drain, nothing},
  264.     {"echo", 0, 
  265.         echo_getopts, echo_start, echo_flow, echo_drain, echo_stop},
  266.     {"band", 0, 
  267.         band_getopts, band_start, band_flow, null_drain, band_stop},
  268.     {"lowp", 0, 
  269.         lowp_getopts, lowp_start, lowp_flow, null_drain, lowp_stop},
  270.     {"highp", 0, 
  271.         highp_getopts, highp_start, highp_flow, null_drain,highp_stop},
  272. #ifdef    USE_DYN
  273.     {"dyn", 0, 
  274.         dyn_getopts, dyn_start, dyn_flow, null_drain, dyn_stop},
  275. #endif
  276.     {"rate", EFF_RATE, 
  277.         rate_getopts, rate_start, rate_flow, null_drain, nothing},
  278.     {"reverse", 0, 
  279.         reverse_getopts, reverse_start, 
  280.         reverse_flow, reverse_drain, reverse_stop},
  281.     0
  282. };
  283.  
  284.